import pygame
# from 游戏设置 import 类_游戏设置


class 类_飞船:
    """管理飞船的类"""

    def __init__(self, 类_管理游戏资源和行为):
        """初始化飞船,并且设置初始位置"""
        self.屏幕 = 类_管理游戏资源和行为.游戏窗口  # 调用另一个类的实例,并且赋值 下面一样的
        self.屏幕_矩形 = 类_管理游戏资源和行为.游戏窗口.get_rect()

        self.设置 = 类_管理游戏资源和行为.设置  # 这里的设置 最终调用的是<游戏设置>的类

        # 加载飞船图像,并获取外接矩形
        self.飞船图像 = pygame.image.load("飞船图像/飞船.bmp")
        self.矩形 = self.飞船图像.get_rect()

        # 对于每一个新飞船(初始状态设置)
        self.矩形.midbottom = self.屏幕_矩形.midbottom  # 都放到屏幕的底部中央

        self.x = float(self.矩形.x)  # 把数值变成浮点数,因为我们设置飞船移动倍数不一定是整数
        self.y = float(self.矩形.y)

        self.向右移动 = False  # 初始化假,不移动.
        self.向左移动 = False
        self.向上移动 = False
        self.向下移动 = False

    def 战斗飞船(self):
        """在指定位置绘制飞船"""
        self.屏幕.blit(self.飞船图像, self.矩形)

    def 更新飞船移动(self):
        """根据移动标志,调整飞船的位置. 在<游戏窗口>类里实现赋值 False或者True"""
        if self.向右移动 and self.矩形.right < self.屏幕_矩形.right:  # 接收True值 and 飞船不能脱离屏幕的右边框
            self.x += self.设置.飞船速度倍数  # X轴 加像素点
        if self.向左移动 and self.矩形.left > self.屏幕_矩形.left:  # 接收True值 and 飞船不能脱离屏幕的左边框(这里的矩形就是飞船)
            self.x -= self.设置.飞船速度倍数  # X轴 减像素点

        if self.向上移动 and self.矩形.top > self.屏幕_矩形.top:  # 接收True值 and 飞船不能脱离屏幕的上边框(这里的矩形就是飞船)
            self.y -= self.设置.飞船速度倍数  # y轴 减像素点
        if self.向下移动 and self.矩形.bottom < self.屏幕_矩形.bottom:  # 接收True值 and 飞船不能脱离屏幕的底边框(这里的矩形就是飞船)
            self.y += self.设置.飞船速度倍数  # y轴 加像素点

        self.矩形.x = self.x  # 真正控制飞船左右移动的是 矩形.x ,我们把数值在赋值给它(但只能存储整数部分)
        self.矩形.y = self.y  # 真正控制飞船上下移动的是 矩形.y


"""
这里说明下面屏幕像素问题
屏幕有X轴和Y轴, X轴控制左右 Y轴控制上下
设置是 屏幕的左上角(X轴=0, Y轴=0)
向右X轴数值越大 向下Y轴数值越大

这样理解,就知道上面的 self.矩形.x 的加减是什么意思了,其他的类似
"""